from datetime import datetime, timedelta
import yaml


# 输入一个时间戳，生成未来20个文件名
# 202406052312.npy
def generate_future_npy_filenames(prefix, last_npy_filename, format, len=20):
    '''

    :param prefix: 表示存放的目录前缀
    :param last_npy_filename: 当前时间名
    :param format: 格式
    :param len: 生成长度
    :return:
    '''
    # 解析文件名中的日期和时间
    date_part = last_npy_filename[:8]  # 年月日
    time_part = last_npy_filename[8:]  # 小时和分钟（前两位补零）

    # 将日期和时间部分转换为datetime对象
    last_npy_datetime = datetime.strptime(f"{date_part}{time_part[:2]}:{time_part[2:]}", "%Y%m%d%H:%M")

    # 初始化文件名列表
    future_npy_filenames = []

    # 添加未来两个小时（每隔六分钟）的npy文件名
    for i in range(1, len + 1):  # 从1开始，因为已经有一个时间点
        future_time = last_npy_datetime + timedelta(minutes=6 * i)
        if prefix == '':
            new_filename = future_time.strftime('%Y%m%d%H%M')[:12] + '.' + format
        else:
            # 格式化新的文件名
            new_filename = f"{prefix + '/' + future_time.strftime('%Y%m%d%H%M')[:12]}." + format  # 截取到小时和分钟的前两位，并补零
        future_npy_filenames.append(new_filename)

    return future_npy_filenames


# 生成未来一个小时之后的结果时间戳
def getOneHourLater(currentTime):
    last_npy_datetime = datetime.strptime(f"{currentTime[:8]}{currentTime[8:10]}:{currentTime[10:]}", "%Y%m%d%H:%M")
    timestamp_str = (last_npy_datetime + timedelta(hours=1)).strftime('%Y%m%d%H%M')
    year = timestamp_str[:4]
    month = timestamp_str[4:6]
    day = timestamp_str[6:8]
    hour = timestamp_str[8:10]
    minute = timestamp_str[10:]

    # 格式化输出
    formatted_time = f'{year}年{month}月{day}日 {hour}时:{minute}分'
    return formatted_time


def getCurrentTimeName(currentTime):
    last_npy_datetime = datetime.strptime(f"{currentTime[:8]}{currentTime[8:10]}:{currentTime[10:]}", "%Y%m%d%H:%M")
    timestamp_str = last_npy_datetime.strftime('%Y%m%d%H%M')
    year = timestamp_str[:4]
    month = timestamp_str[4:6]
    day = timestamp_str[6:8]
    hour = timestamp_str[8:10]
    minute = timestamp_str[10:]
    # 格式化输出
    formatted_time = f'{year}年{month}月{day}日 {hour}时:{minute}分'
    return formatted_time


if __name__ == '__main__':
    time = '202406052312'
    print(getOneHourLater(time))
